﻿using _N2O4Manager;
using Engine;
using Game.NetWork;
using Game.Server;
using Game.Server.Plugins;
using LiteNetLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting.Channels;
using System.Text;
using System.Threading.Tasks;

namespace _N2O4Manager
{
    public static class N2O4Manager
    {
        private static List<Game.Server.Plugins.IN2O4反挂框架> 反挂列表 = new List<Game.Server.Plugins.IN2O4反挂框架>(); //定义一个List

        public static void AddObject(Game.Server.Plugins.IN2O4反挂框架 N2O4反挂框架) //定义一个方法
        {
            if (!反挂列表.Contains(N2O4反挂框架)) //判断是否已经存在
            {
                反挂列表.Add(N2O4反挂框架); //添加到List
            }
        }

        public static void RemoveObject(Game.Server.Plugins.IN2O4反挂框架 N2O4反挂框架) //定义一个方法
        {
            if (反挂列表.Contains(N2O4反挂框架)) //判断是否存在
            {
                反挂列表.Remove(N2O4反挂框架); //从List移除
            }
        }

        public static bool N2O4BanGuid(Guid guid, NetNode netNode, ConnectionRequest request) //定义一个方法
        {
            foreach (Game.Server.Plugins.IN2O4反挂框架 n2o4banEventHandle in 反挂列表) //遍历List
            {
                if (n2o4banEventHandle.N2O4BanGuid(guid, netNode, request)) //调用接口方法
                {
                    return true; //如果有插件处理了，则返回true
                }
            }
            return false; //没有插件处理，返回false
        }

        static N2O4Manager()
        {
            Log.Information("N2O4Manager初始化成功");
        }

        public static Guid 玩家Guid =  Guid.Empty; // 定义一个变量 Guid.Empty 表示一个空Guid

        public static Guid 玩家newGuid() // 定义一个方法
        {
            Guid 新玩家Guid = Guid.NewGuid(); //生成一个新的Guid
            Log.Information("新玩家的Guid为: " + 新玩家Guid); //输出新玩家的Guid
            return 新玩家Guid; //返回新玩家的Guid
        }

    }
}
namespace Game.Server.Plugins
{
    public interface IN2O4反挂框架
    {
        byte FirstLevel { get; }//定义一个属性

        bool N2O4BanGuid(Guid guid, NetNode netNode, ConnectionRequest request);
    }

    public class N2O4Server : ServerPlugin , IN2O4反挂框架
    {
        public override int Version => 100 ;

        public override string Name => "N2O4反挂框架";

        public byte FirstLevel => 1;

        public override void Initialize()
        {
            N2O4Manager.AddObject(this);//注册到BanEventManager
            Console.WriteLine("N2O4Server初始化成功");
        }               

        public override void Load()
        {
           
        }

        public bool N2O4BanGuid(Guid guid, NetNode netNode, ConnectionRequest request)
        {
             return false;
        }

        public override void Save()
        {

        }
    }

}

